package com.betterman.controller;

import com.betterman.pojo.User;
import com.betterman.pojo.vo.UserVO;
import com.betterman.utils.RedisOperator;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;

import java.util.UUID;

/**
 * 封装部分基础服务到 base
 * @author <a href="mailto:foxfocus@163.com">fox</a>
 * @version 5:06 下午 2020/8/6
 */
@RestController
public class BaseController {
    /**
     * token key 值
     */
    public final static String REDIS_UNIQUE_TOKEN = "redis-unique-token";

    @Autowired
    protected RedisOperator redisOperator;

    /**
     * 设置 token ，并返回 userVO 对象
     * @param user 用户信息
     * @return {UserVO} userVO
     */
    public UserVO setToken(User user){
        if (user == null || StringUtils.isBlank(user.getId())) {
            return null;
        }
        // 会话建立前后端的联系
        // 实现用户分布式会话，创建一个 Token 保存在 redis 中，可以被任意集群节点访问
        String uniqueToken = UUID.randomUUID().toString().trim();
        System.out.println(uniqueToken);
        redisOperator.set(REDIS_UNIQUE_TOKEN + ":" + user.getId(), uniqueToken);
        UserVO usersVO = new UserVO();
        BeanUtils.copyProperties(user, usersVO);
        usersVO.setUserUniqueToken(uniqueToken);
        return usersVO;
    }
}
